using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._GeodatabaseAdministration
{
    /// <summary>
    /// <para>Export Geodatabase Configuration Keywords</para>
    /// <para>Exports the configuration keywords, parameters, and values from the specified enterprise geodatabase to an editable file. Change parameter values or add custom configuration keywords to the file and use the Import Geodatabase Configuration Keywords tool to import the changes to the geodatabase.</para>
    /// <para>将配置关键字、参数和值从指定的企业级地理数据库导出到可编辑文件。更改参数值或向文件添加自定义配置关键字，然后使用导入地理数据库配置关键字工具将更改导入地理数据库。</para>
    /// </summary>    
    [DisplayName("Export Geodatabase Configuration Keywords")]
    public class ExportGeodatabaseConfigurationKeywords : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ExportGeodatabaseConfigurationKeywords()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_input_database">
        /// <para>Input Database Connection</para>
        /// <para>The connection file for the enterprise geodatabase from which you want to export configuration keywords, parameters, and values. You must connect as the geodatabase administrator.</para>
        /// <para>要从中导出配置关键字、参数和值的企业级地理数据库的连接文件。您必须以地理数据库管理员身份进行连接。</para>
        /// </param>
        /// <param name="_out_file">
        /// <para>Output File</para>
        /// <para>The full path to and name of the ASCII text file to be created. The file will contain all the configuration keywords, parameters, and values from the enterprise geodatabase's DBTUNE (or SDE_DBTUNE) system table.</para>
        /// <para>要创建的 ASCII 文本文件的完整路径和名称。该文件将包含企业级地理数据库的 DBTUNE（或SDE_DBTUNE）系统表中的所有配置关键字、参数和值。</para>
        /// </param>
        public ExportGeodatabaseConfigurationKeywords(object _input_database, object _out_file)
        {
            this._input_database = _input_database;
            this._out_file = _out_file;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Export Geodatabase Configuration Keywords";

        public override string CallName => "management.ExportGeodatabaseConfigurationKeywords";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_input_database, _out_file, _out_workspace];

        /// <summary>
        /// <para>Input Database Connection</para>
        /// <para>The connection file for the enterprise geodatabase from which you want to export configuration keywords, parameters, and values. You must connect as the geodatabase administrator.</para>
        /// <para>要从中导出配置关键字、参数和值的企业级地理数据库的连接文件。您必须以地理数据库管理员身份进行连接。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Database Connection")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _input_database { get; set; }


        /// <summary>
        /// <para>Output File</para>
        /// <para>The full path to and name of the ASCII text file to be created. The file will contain all the configuration keywords, parameters, and values from the enterprise geodatabase's DBTUNE (or SDE_DBTUNE) system table.</para>
        /// <para>要创建的 ASCII 文本文件的完整路径和名称。该文件将包含企业级地理数据库的 DBTUNE（或SDE_DBTUNE）系统表中的所有配置关键字、参数和值。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output File")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_file { get; set; }


        /// <summary>
        /// <para>Input Workspace</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Workspace")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_workspace { get; set; }


        public ExportGeodatabaseConfigurationKeywords SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}